量算功能

最后更新时间:2019年7月5日

量算功能包括地图空间距离量算和面积量算,既可以量算几何距离/面积,也可以量算实地距离/面积。此功能经常应用于外业数据采集等项目中,通常将计算出来的结果(长度或面积)展示到界面上,可以通过文本、地图标注等形式展示。

量算功能对应核心类为几何线段类MGSGeoLine和几何多边形类MGSGeoPolygon,通过MGSGeoLine提供的calLength方法实现距离量算,通过MGSGeoPolygon提供的calArea方法实现距离量算。

1 长度量算 Sample详情

长度量算功能,多用于量算地图上已有的线要素,或者量算用户绘制的图形。此功能由MGSGeoLine类提供,所以实现功能之前,需获取到MGSGeoLine或其子类对象,可直接创建,也可利用要素查询得到线要素从中获取,也可绘制线图形进而转化。

量算长度,可以量算几何长度,也可量算实地长度。利用不带参数的calLength方法默认以米为单位量算,如果地图单位不为米制单位,需传递地图空间参考系才能量算实地长度。

//创建MGSGeoVarLine几何对象
MGSGeoVarLine *geoVarLine=[[MGSGeoVarLine alloc] init];
[geoVarLine append2D:dot1];
[geoVarLine append2D:dot2];
[geoVarLine append2D:dot3];

//方法1-量算线几何长度
double length=[geoVarLine calLength];

//方法2-量算线实地长度
//获取地图的空间参考系信息
MGSSRefData *ref=[_mMapView.map getSRSInfo];
double length=[geoVarLine calLength:ref];

2 面积量算 Sample详情

面积量算的功能,由MGSGeoPolygon类提供,所以量算之前需获取到MGSGeoPolygon对象,同样可以直接创建,也可从查询的MGSFeature要素中获取,也可根据绘制的多边形转换而成。

与长度量算类似,同样支持量算几何面积和实地面积,地图单位不是米时,需传递地图的空间参考系才能量算正确的实地面积。

//创建MGSGeoPolygon几何对象
MGSGeoPolygon *geoPolygon=[[MGSGeoPolygon alloc] init];
MGSDots *dots=[[MGSDots alloc] init];
[dots appendDot:dot1];
[dots appendDot:dot2];
[dots appendDot:dot3];
[dots appendDot:dot1];
MGSIntList *intList=[[MGSIntList alloc] init];
[intList append:4];
[geoPolygon setDots:dots numList:intList];

//方法1-计算几何面积
double area=[geoPolygon calArea];

//方法2-计算实地面积
//获取地图的空间参考系信息
MGSSRefData *ref=[_mMapView.map getSRSInfo];
double area=[geoPolygon calArea:ref];

实现效果如下图所示:

长度量算.jpg 面积量算.jpg